package com.多态.基础;
class A{
    void fun1(){
        System.out.println("这是A中的fun1");
    }
    //被final，static，private修饰的方法不能重写
    final void fun2(){
        System.out.println("这是A中的fun2");
    }
    static void fun3(){
        System.out.println("这是A中的fun3");
    }
    private void fun4(){
        System.out.println("这是A中的fun4");
    }
    //访问修饰限定符：子类的必须大于父类
    void fun5(){
        System.out.println("这是A中的fun5");
    }
    //方法的返回值可以不同，但是必须是父子类关系
    A fun6(){
        System.out.println("这是A中的fun6");
        return new A();
    }
}
class B extends A{
    @Override//起到了一定的校验作用
    void fun1(){
        System.out.println("这是B中的fun1");
    }
//    @Override
//    void fun2(){//错误
//        System.out.println("这是B中的fun2");
//    }
//    @Override
//    void fun3(){//错误
//        System.out.println("这是B中的fun3");
//    }
//    @Override
//    void fun4(){//错误
//        System.out.println("这是B中的fun4");
//    }
    @Override
    protected void fun5(){
        System.out.println("这是B中的fun5");
    }
    @Override
    B fun6(){
        System.out.println("这是B中的fun6");
        return new B();
    }
}

